跳到主要内容

状态机(State Machines)

更多背景:

概览

State Machine 负责在 Artboard 上推进动画与状态转换。

组件模式(推荐)

Rive Widget 会自动根据你配置的 artboard/state machine 加载并推进。

可在 OnWidgetStatusChanged 后读取实例:

[SerializeField] private RiveWidget m_riveWidget;

void OnEnable() {
m_riveWidget.OnWidgetStatusChanged += OnWidgetStatusChanged;
}

void OnWidgetStatusChanged() {
if (m_riveWidget.Status == WidgetStatus.Loaded) {
StateMachine sm = m_riveWidget.StateMachine;
}
}

void OnDisable() {
m_riveWidget.OnWidgetStatusChanged -= OnWidgetStatusChanged;
}

Legacy API

可从 Artboard 获取状态机:

m_stateMachine = m_artboard?.StateMachine();      // default
m_stateMachine = m_artboard?.StateMachine(0); // by index
m_stateMachine = m_artboard?.StateMachine("Name"); // by name

并在 Update 中推进:

m_stateMachine?.Advance(Time.deltaTime);

建议

新项目优先走组件模式 + Data Binding。
仅在你需要完整自定义渲染循环时使用 legacy/低层路径。